home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d14 / demdat.arc / MENU.SBP < prev    next >
Text File  |  1990-06-01  |  14KB  |  620 lines

  1. SBP
  2.   ╜     MENU                                
  3.   ╜     Superbase Demonstration Trading System 
  4.   ╜     Master Menu Program
  5.   ╜     Last updated May 16, 90
  6.  
  7.   │ _ wferror
  8.  
  9. mloop: ╜ Menu item selection
  10.   ▀ e
  11.   íret% p
  12.  ╜ Returning from another routine
  13.  í £ banner$ p ┤ £banner$ ^ £
  14.  íma% 
  15. 4 p vsmenu
  16.   ^
  17.  ╜ First time thru
  18.  í σsys(7) 
  19. 400 pvga$ "n" ^vga$ "y"
  20.  ívga$ "y" pbanner$ "menuf" ^banner$ "menufe"
  21.  vsinit
  22.   Æ í
  23.   ¼ │ma%,mb%
  24.   ╩ ╦ss1$
  25.   ╪ Oma%
  26.  íh2%  :( R) p vshead
  27.   ┘
  28.   íma% 
  29. 4 p ¼ à
  30.  ret% 1
  31.   │ma% wm1,m2,m3,m4,m5,m6
  32.  
  33. sinit: ╜ Initialize first time thru
  34.   å t: Γ e:  ╩ f │: ╦ │: ▓"z-99999.00"
  35.  h3$ "Superbase Demonstration Trading System "
  36.   ╩ ╦"Initializing application"
  37.   ╩ ┬ ƒ"Trading System"
  38.   vshead
  39.   ┤ £banner$
  40.   ┤ Ö"TRANS": ┤ Ö"CTRL": ╜ opens all files
  41.   ╫pstk$(12),pstk%(12): ╜ key arrays for multi-record screens
  42.  
  43.   ╜ Dialog messages
  44.  ms1$ "Is entry correct?"
  45.  ms2$ "Continue with data entry?"
  46.  ms3$ "Do you wish to reprint?"
  47.  ms4$ "Has all output been correctly printed?"
  48.  ms5$ "Select another record?"
  49.  ms6$ "Select another line?"
  50.  ms7$ "Select index sequence"
  51.  ms8$ "Record already exists with this key"
  52.  ms9$ "Press OK to make another selection"
  53.  ms10$ "Report to printer?"
  54.  ms11$ "Report line too long for printer"
  55.  ms12$ "Try using a smaller font"
  56.  ms13$ "Include external images and text?"
  57.  ms14$ "Deleting record "
  58.  ms15$ "Are you sure?"
  59.  ms16$ "Print (c)urrent record, (s)elected or (a)ll records"
  60.  ms17$ "(d)isplay or (p)rint?"
  61.  ms18$ "Cannot find related client record"
  62.  ms19$ "Transaction record found"
  63.  ms20$ "Please delete related transaction(s)"
  64.  ms21$ "Break in program"
  65.  ms22$ "Do you wish to resume?"
  66.  ms23$ "Select query to be loaded"
  67.  ms24$ "Enter query name"
  68.  ms25$ "Cannot edit or delete"
  69.  ms26$ "Batch totals do not agree"
  70.  ms27$ "Amount must be positive"
  71.  ms28$ "Batch totals agree"
  72.  ms29$ "Do you wish to edit batch?"
  73.  ms30$ "Do you have a VGA display adapter?"
  74.  
  75.  ms311$ "This produces certificate advices for"
  76.  ms312$ "transactions with certificate numbers"
  77.  ms321$ "This produces contract notes"
  78.  ms322$ "for all new transactions"
  79.  
  80.  ms411$ "This updates stocks with year highs"
  81.  ms421$ "This updates stocks with year lows"
  82.  ms431$ "This updates transactions to indicate"
  83.  ms432$ "that certificates have been sent"
  84.  ms442$ "that contract notes have been sent"
  85.  
  86.   ╜ Status line messages
  87.  ss1$ "Select a pulldown menu option"
  88.  ss2$ "Select a pushbutton option"
  89.  ss3$ "Enter data for new record"
  90.  ss4$ "Use TAB or click on field to be edited. ESC to stop."
  91.  ss6$ "Printing"
  92.  ss7$ "Press the Space Bar to continue"
  93.  ss8$ "Creating temporary mailmerge file"
  94.  ss9$ "Enter new value(s)"
  95.  ss10$ "Browse in "
  96.  ss11$ " sequence: use STOP to end browsing"
  97.  ss12$ "Select line to be deleted"
  98.  ss13$ "Select pushbutton or click on line to edit"
  99.  ss14$ "Press any key or click on mouse button to continue"
  100.  ss15$ "Create or edit query. Use ENTER to stop"
  101.  ss16$ "Checking whether referenced elsewhere"
  102.  ss17$ "Updating client trading balance"
  103.  ss18$ "Press ENTER for default values"
  104.  ss19$ "Updating"
  105.  ss20$ "Enter batch total"
  106.  ss21$ "Move the pointer over a transaction line and click"
  107.   ¼ à
  108.  
  109. smenu: ╜ Define pulldown menus
  110.      ╜ Flags in CTRL do graying for doc production/update cycles
  111.   ¼1,0,1,"&File"
  112.   ¼1,1,1,"&Clients"
  113.   ¼1,2,1,"&Stocks"
  114.   ¼1,3,1,"C&ountries"
  115.   ¼1,4,1,"C&urrencies"
  116.   ¼1,5,tran.CTRL,"&Transactions"
  117.   ¼1,6,1,"&Exit"
  118.  
  119.   ¼2,0,1,"&Daily"
  120.   ¼2,1,1,"&Currency Rates"
  121.   ¼2,2,1,"&Stock Prices"
  122.   ¼2,3,cent.CTRL,"Certificate &Nos"
  123.   ¼2,4,1,"Cash &Receipts"
  124.   ¼2,5,1,"Cash &Payments"
  125.  
  126.   ¼3,0,1,"D&ocuments"
  127.   ¼3,1,cert.CTRL,"&Certificates":
  128.   ¼3,2,cont.CTRL,"C&ontract Notes"
  129.   ¼3,3,1,"&Statements"
  130.  
  131.   ¼4,0,1,"&Update"
  132.   ¼4,1,1,"Stock &Highs"
  133.   ¼4,2,1,"Stock &Lows"
  134.   ¼4,3,ceru.CTRL,"&Certs Sent"
  135.   ¼4,4,conu.CTRL,"&Notes Sent"
  136.  
  137.   ¼5,0,1,"&Query"
  138.   ¼5,1,1,"&Run"
  139.   ¼5,2,1,"&New"
  140.   ¼5,3,1,"&Open"
  141.   ¼5,4,1,"&Edit"
  142.   ¼5,5,1,"&Save"
  143.  
  144.   ¼6,0,1,"&Reports"
  145.   ¼6,1,1,"&Traded Stocks"
  146.   ¼6,2,1,"Stock &Highs"
  147.   ¼6,3,1,"Stock &Lows"
  148.   ¼6,4,1,"T&rading Balances"
  149.   ¼6,5,1,"-----------------"
  150.   ¼6,6,1,"Telephone &Nos"
  151.   ¼6,7,1,"Client &Balances"
  152.   ¼6,8,1,"&Cash Audit"
  153.   ├
  154.  
  155. shead: ╜ Set heading every minute during menu wait
  156.  h1$  ( Q,"mmm dd, yy"):h2$  7( R,"hh:mm am")
  157.  h2%  :( R):h3% (50  /(h3$)) 2
  158.  h4$ h1$  '(h3%) h3$  '(h3%) h2$
  159.   ╩ ƒh4$
  160.   ├
  161.  
  162. m1: ╜ ma%= 1 File menu options 
  163.  selkey$ "":selkey% 0
  164.   │mb% wstkf,stkf,m13,m13,stkf,m16
  165.  
  166. m13: ╜ File Countries, Currencies
  167.   ä"stkfo"
  168.  
  169. m16: ╜ File Exit
  170.   å t: ╩ ƒ"": ╩ ┬ ƒ"": Γ │: Æ
  171.  
  172. m2: ╜ ma%=2 Daily menu options
  173.   │mb% wm21,m21,m21,m24,m24
  174.  
  175. m21: ╜ Daily Currency rates, Stock prices, Certificate numbers 
  176.   ä"stkdc"
  177.  
  178. m24: ╜ Daily Cash receipts, Cash payments
  179.   ä"stkdr"
  180.  
  181. m3: ╜ ma%=3 Documents menu options
  182.   │mb% vm31,m31,stkf
  183.   wmloop
  184.  
  185. m31: ╜ Documents Certificate advices, Contract notes
  186.   ╔ µmb%
  187.   µ1
  188.  ┬ms311$,ms312$,140,a%
  189.   µ2
  190.  ┬ms321$,ms322$,140,a%
  191.   Æ ╔
  192.   ía% 0 p ├
  193.  
  194.   ▀ e
  195.   ╩ ╦ss8$
  196.   ímb% 1 p
  197.  ╜ Certificate advices
  198. docf$ "certs":letf$ "lecerts"
  199.  í J("certs.sbf") p ┤ Ödocf$: ╛ Ödocf$
  200.  ╔Customer_Ref.TRANS,Quantity.TRANS,Certificate_No.TRANS,Title.CLIENTS,Firstname.CLIENTS,
  201. Lastname.CLIENTS,Company.CLIENTS,Street.CLIENTS,Address.CLIENTS,
  202. City.CLIENTS,State.CLIENTS,Zip_Code.CLIENTS,Country.CLIENTS,
  203. Company Name.STOCKS,Stock_Type
  204.  ╨Customer_Ref.TRANS Customer_Ref.CLIENTS  Stock_Key.TRANS Stock_Key.STOCKS  Trans_Type.TRANS "b"  Certificate_No.TRANS ""  Cert_Sent_yn.TRANS "n"
  205.  ╡Stock_Key.TRANS,Certificate_No.TRANS
  206.  q Ödocf$
  207.  Æ ╔
  208.   ^ ímb% 2 p
  209.  ╜ Contract notes
  210. docf$ "invs":letf$ "leinvs"
  211.  í J("invs.sbf") p ┤ Ödocf$: ╛ Ödocf$
  212.  ╔Stock_Key.TRANS,Customer_Ref.TRANS,Transaction ref,Trans_Type,Trans_Desc,Trans_Date,Settlement_Date, (Quantity.TRANS,6,0) U"QTY", (Stock_Price.TRANS,6,2) U"PR",Currency.TRANS,USD Xrate.TRANS,
  213.  ( (USD Value.TRANS),6,2) U"USDV",(Comm_Value) U"Com", ( (USD Value.TRANS Comm_Value),6,2) U"TV",&24(Client.CLIENTS) U"Client",Company.CLIENTS,Street.CLIENTS,Address.CLIENTS,City.CLIENTS,
  214. State.CLIENTS,Zip_Code.CLIENTS,Country.CLIENTS,Company Name.STOCKS,Stock_Type,Exchange
  215.  ╨Customer_Ref.TRANS Customer_Ref.CLIENTS  Stock_Key.TRANS Stock_Key.STOCKS  Invoice_Sent_yn.TRANS "n"
  216.  ╡Customer_Ref.TRANS,Transaction ref
  217.  q Ödocf$
  218.  Æ ╔
  219.   Æ í
  220.   ┤ Ödocf$
  221.   vsdorp: ╜ display or print
  222.   ía% 0 p ╛ Ödocf$: ├
  223.  
  224. m312: ╜ Display or print merge documents
  225.   ¿ oletf$: ╔ `
  226.   ╪ O B(docf$)
  227.  íp$ "p" p ¡ oletf$
  228.  íp$ "d" p { o ¡
  229.  ╧ ¢2
  230.  ╔ ▒
  231.   ┘
  232.  b% 0
  233.   ┬ms4$,"",130,a%
  234.   ía% p
  235.  ╜ Update CTRL file and re-set menus grayed=0 active=1 
  236.  Ö"ctrl"
  237.  ímb% 1 p
  238. tran.CTRL 0:cent.CTRL 0:cert.CTRL 0:ceru.CTRL 1
  239.  ¼1,5,tran.CTRL,"&Transactions"
  240.  ¼2,3,cent.CTRL,"Certificate &Nos"
  241.  ¼3,1,cert.CTRL,"&Certificates"
  242.  ¼4,3,ceru.CTRL,"&Certs Sent"
  243.  ^ ímb% 2 p
  244. tran.CTRL 0:cont.CTRL 0:conu.CTRL 1
  245.  ¼1,5,tran.CTRL,"&Transactions"
  246.  ¼3,2,cont.CTRL,"C&ontract Notes"
  247.  ¼4,4,conu.CTRL,"&Notes Sent"
  248.  Æ í
  249.  ╠
  250.   ^
  251.  ┬ms3$,"",135,b%
  252.  íb% 0 p ╛ Ödocf$
  253.   Æ í
  254.   íb% 1 wm312
  255.   ├
  256.  
  257. m4: ╜ ma%=4 Update menu options
  258.   │mb% vm41,m42,m43,m44
  259.   wmloop
  260.  
  261. m41: ╜ Update New Highs
  262.   ┬ms411$,"",140,a%
  263.   ía% p
  264.  ▀ e
  265.  ╩ ╦ss19$
  266.  ═Year_High.STOCKS Price Middle.STOCKS:Date of High.STOCKS Price Date.STOCKS
  267.  ╨Price Middle.STOCKS Year_High.STOCKS  6(Price Date.STOCKS)  6(Date of High.STOCKS)
  268.  Æ ═
  269.   Æ í
  270.   ├
  271.  
  272. m42: ╜ Update New Lows
  273.   ┬ms421$,"",140,a%
  274.   ía% p
  275.  ▀ e
  276.  ╩ ╦ss19$
  277.  ═Year_Low.STOCKS Price Middle.STOCKS:Date of Low.STOCKS Price Date.STOCKS
  278.  ╨Price Middle.STOCKS     Year_Low.STOCKS  6(Price Date.STOCKS)  6(Date of Low.STOCKS)
  279.  Æ ═
  280.   Æ í
  281.   ├
  282.  
  283. m43: ╜ Update Certs Sent
  284.   ┬ms431$,ms432$,140,a%
  285.   ía% p
  286.  ▀ e
  287.  ╩ ╦ss19$
  288.  ═Cert_Sent_YN.TRANS "y"
  289.  ╨Certificate_No.TRANS ""  Cert_Sent_YN.TRANS "n"
  290.  Æ ═
  291. 
  292.  ╜ Update CTRL file and re-set menus grayed=0 active=1 
  293.  Ö"ctrl"
  294. tran.CTRL 1:cent.CTRL 1:cert.CTRL 1:ceru.CTRL 0
  295.  ¼1,5,tran.CTRL,"&Transactions"
  296.  ¼2,3,cent.CTRL,"Certificate &Nos"
  297.  ¼3,1,cert.CTRL,"&Certificates"
  298.  ¼4,3,ceru.CTRL,"&Certs Sent"
  299.  ╠
  300.   Æ í
  301.   ├
  302.  
  303. m44: ╜ Update Contract Notes Sent
  304.   ┬ms431$,ms442$,140,a%
  305.   ía% p
  306.  ▀ e
  307.  ╩ ╦ss19$
  308.  ═Invoice_Sent_yn.TRANS "y" ╨Invoice_Sent_yn.TRANS "n"
  309.  Æ ═
  310. 
  311.  ╜ Update CTRL file and re-set menus grayed=0 active=1 
  312.  Ö"ctrl"
  313. tran.CTRL 1:cont.CTRL 1:conu.CTRL 0
  314.  ¼1,5,tran.CTRL,"&Transactions"
  315.  ¼3,2,cont.CTRL,"C&ontract Notes"
  316.  ¼4,4,conu.CTRL,"&Notes Sent"
  317.  ╠
  318.   Æ í
  319.   ├
  320.  
  321. m5: ╜ ma%=5 Query menu options
  322.   ▀ │: ▓"z-9999999.00"
  323.   ╔ µmb%
  324.   µ1: ╜ Query Run
  325.  vsdorp
  326.  ía% p
  327.  íp$ "p" p
  328.  { i q h
  329.  ^
  330.  { i
  331.  ╩ ╦ss14$
  332.  ╧ Ñ  ▀
  333.  Æ í
  334.  £
  335.  Æ í
  336.   µ2: ╜ Query New
  337.  ╩ ╦ss15$
  338.  │ _ wmqerror
  339.  ░ i
  340.  É i
  341.   µ3: ╜ Query Open
  342.  ┬ms23$,"",14,a%,q$
  343.  ía% p ¿ iq$
  344.   µ4: ╜ Query Edit
  345.  ╩ ╦ss15$
  346.  │ _ wmqerror
  347.  É i
  348.   µ5: ╜ Query Save
  349.  ┬ms24$,"",14,a%,q$
  350.  ía% p ┼ iq$
  351.   Æ ╔
  352.   ímb% 2 pmb% 1: wm5: ╜ if New query then Run
  353.  
  354. mqerror:  ╜ Trap for errors generated from Query dialog
  355.   │ _ wferror
  356.   ▓"z-99999.00"
  357.   wmloop
  358.  
  359. m6: ╜ ma%=6 Reports menu options
  360.   vsdorp:  ía% 0 p wmloop
  361.   │mb% wm61,m62,m63,m64,mloop,m66,m67,m68
  362.  
  363. m61: ä"stkrte"
  364. m62: ä"stkrhe"
  365. m63: ä"stkrle"
  366. m64: ä"stkrre"
  367. m66: ä"stkrne"
  368. m67: ä"stkrbe"
  369. m68: ä"stkrce"
  370.  
  371. sdorp: ╜ Select d=display p=print
  372.  p$ "d"
  373.   ┬ms17$,"",4,a%,p$,1
  374.   í O(p$ "[pd]") wsdorp
  375.   ía% p
  376. p$  =(p$)
  377.  íp$ "d" p ╩ ╦ss7$ ^ ╩ ╦ss6$: ╣;
  378.   Æ í
  379.   ├
  380.  
  381. stkf: ╜ File Clients, Stocks, Transactions 
  382.  ╜ Documents Statements
  383.  fst% 0:cli% 1:stk% 2:sta% 3:tra% 5:k% 1:t% 0
  384.   ╜ Set option parameters
  385.   ╔ µmb%
  386.   µcli%: ╜ File Clients
  387. f$ "clients":fkey$ "Customer_Ref":fmd$ "stkc":fmp$ "stkc2"
  388.  ívga$ "n" pfmd$ "stkce"
  389.   µstk%: ╜ File Stocks
  390. f$ "stocks":fkey$ "Stock_Key":fmd$ "stks":fmp$ "stks2"
  391.   µsta%: ╜ File Transactions
  392. f$ "clients":fkey$ "Customer_Ref":fmd$ "stkos":fmp$ "stkos2"
  393.   µtra%: ╜ Documents Statements
  394. f$ "trans":fkey$ "Transaction ref":fmd$ "stkt":k% 2
  395.   Æ ╔
  396.  
  397.   Öf$
  398.   úfkey$
  399.   í £ fmd$ p ┤ £fmd$
  400.  ind$  ú
  401.   vsset
  402.  
  403.   ╜ File forms have command only on page 1 to select form on selkey 
  404.   ímb% sta% p £2
  405.   wfwait 
  406.  
  407. floop: ╜ Re-display form
  408.   vsset
  409.   vssearch
  410.   ╬
  411.  
  412. fwait: ╜ Wait here for form pushbutton 
  413.  ed% 1
  414.   ╩ ╦ss2$
  415.   ╧ ▀
  416.   wfwait
  417.  
  418. fedit: ╜ Edit pushbutton
  419.   ╩ ╦ss4$
  420.   ímb% tra% poamt% Total_Due.TRANS
  421.   ▀ │: ö3,0
  422.  
  423. fedit2: 
  424.   ▀ e
  425.   ┬ms1$,"",127,a%
  426.   ía% 1 p
  427.  ╠: ╜ Stores edited data 
  428.  ímb% tra% pamt% Total_Due.TRANS oamt%: vsupdate
  429.   ^
  430.  ╔ £ Y: ╜ Re-dispay form as before edit 
  431.   Æ í
  432.   wfloop
  433.  
  434. fenter:  ╜ Enter pushbutton
  435.   ü £:ed% 0
  436.   ímb% tra% p
  437. Trans_Type  "b":del% 0: ╩ ╦ss18$
  438.   ^
  439.  ímb% cli% pClass.CLIENTS "P"
  440.  ╩ ╦ss3$
  441.   Æ í
  442.   ▀ │: ö3,0
  443.  
  444. fenter2: 
  445.   ▀ e
  446.  b% 0
  447.   ┬ms1$,"",127,a%
  448.   ía% p
  449.  ╠: ╜ Store new record
  450. del% 0
  451.  ímb% tra% pamt% Total_Due.TRANS:  vsupdate
  452.  ┬ms2$,"",130,b%
  453.   ^
  454.  ╔ £ Y: ╜ Re-display current form
  455.   Æ í
  456.   íb% p wfenter 
  457.   £2
  458.   wfloop 
  459.  
  460. fdelete: ╜ Delete pushbutton
  461.  del% 1
  462.   ímb% tra% p
  463.  ╜ Clients, Stocks, test for related transactions, if so set del%=0
  464.  ╩ ╦ss16$
  465.  Ö"trans"
  466. skey$ ckey$
  467.  ímb% cli% p úCustomer_Ref.TRANS
  468.  ímb% stk% p úStock_Key.TRANS
  469.  ╔ Ñskey$
  470.  í C("") pdel% 0
  471. ckey$ skey$
  472.  Öf$
  473.   Æ í
  474.   ídel% 1 p
  475.  ┬ms14$,"",119,a%
  476.  ía% p
  477.  ímb% tra% pamt%  Total_Due.TRANS: vsupdate
  478.  ╔ ╛
  479.  Æ í
  480.   ^
  481.  ┬ms19$,ms20$,100,a%
  482.   Æ í
  483.   ídel% 0 wfwait
  484.   ╔ £ Ñind$$
  485.   wfloop 
  486.  
  487. fswitch: ╜ Assign key from transaction and get form/record
  488.  mp% 0
  489.   ╩ ╦ss21$
  490.   ╧ ▀
  491.   í(mp% 0 mp% 10) p wfswitch
  492.   ╔ £ "mp%
  493.  
  494. fswitch2: ╜ Entry from Trans form: no need to select line
  495.   ╔ µmb%
  496.   µcli%
  497. selkey$ Customer_Ref.TRANS
  498.   µstk%
  499. selkey$ Stock_Key.TRANS
  500.   µtra%
  501. selkey% Transaction ref.TRANS
  502.   Æ ╔
  503.   wstkf
  504.  
  505. fexit: ╜ Exit pushbutton
  506.   wmloop
  507.  
  508. stexit: 
  509.   ├
  510.  
  511. supdate: ╜ When transaction changes, update balance in Client record
  512.   ╩ ╦ss17$
  513.   Ö"clients"
  514.   úCustomer_Ref.CLIENTS
  515.   ╔ ÑCustomer_Ref
  516.   í C("") p
  517. Trading_Balance.CLIENTS Trading_Balance.CLIENTS amt%
  518.  ╠
  519.   ^
  520.  ┬ms18$,"",100,a%
  521.   Æ í
  522.   Öf$
  523.   ├
  524.  
  525. sindex: ╜ Index pushbutton
  526.   ┬ms7$,"",7,a%,ind$
  527.   ía% p
  528.  úind$
  529.  vssearch
  530.   Æ í
  531.   ╬
  532.   ├
  533.  
  534. spanel: ╜ Browse pushbutton
  535.   │ _ wserror
  536.  err% 0
  537.  ss5$ ss10$ ind$ ss11$
  538.   ╩ ╦ss5$
  539.  
  540. spanel2: 
  541.   ╧ Γ
  542.   │ _ wferror
  543.   ╔ ╨
  544.   íerr% 1 p é │: Γ e
  545.   vsset
  546.   ├
  547.  
  548. serror:  é e: ╜ Error trap for Wait Panel errors
  549.   ┬ (( &),"",2,a%
  550.  err% 1
  551.   ╔ £ Y: yspanel2
  552.  
  553. sprint: ╜ Print pushbutton
  554.  b$ "c":c% 0
  555.   ┬ms16$,"",4,a%,b$,1
  556.   ía% 0 p ├
  557.   í O(b$ "[csa]") p wsprint
  558.  b$  =(b$)
  559.   ímb% cli% p ┬ms13$,"",135,c%
  560.   ímb% sta% p
  561.  ívga$ "n" pfmp$ "stkos2e"
  562.   Æ í
  563.   ╩ ╦ss6$
  564.   ┤ £fmp$: ╜ Open special print form
  565.   íb$ "c" p
  566.  vssearch
  567.  íc% p £ ╚
  568.  ╣ Y
  569.  ┤ £fmd$
  570.  vssearch
  571.   ^
  572.  íb$ "s" p ╔ £ ╨ ~
  573.  ╔ £ `
  574.  ╪ O B(f$)
  575.  íc% p £ ╚
  576.  ╣ Y
  577.  ╔ £ ▒
  578.  ┘
  579.  ╔ ╨
  580.  Å;
  581.  ┤ £fmd$
  582.  ╔ `
  583.   Æ í
  584.   ╬
  585.   ├
  586.  
  587. sset: ╜ Stores unique value for record in ckey
  588.   ík% 1 pckey$ fkey$$
  589.   ík% 2 pckey% fkey$$
  590.   ├
  591.  
  592. ssearch: ╜ Gets unique record even if index has duplicate keys
  593.   ╔ £ Ñind$$
  594.  
  595. ssearch2:  ╜ Loop until correct record found
  596.   ík% 1 p ífkey$$ ckey$ p ├
  597.   ík% 2 p ífkey$$ ckey% p ├
  598.   ╔ £ ▒
  599.   wssearch2
  600.  
  601. ferror: ╜ General error trap 
  602.  res% 0
  603.   í & 11 p
  604.  ┬ms21$,ms22$,130,a%: ía% 1 pres% 1
  605.   ^ í & 57 p
  606.  ┬ms8$,"",2,a%:res% 2
  607.   ^
  608.  ┬ (( &),ms9$,114,a%: ía% 1 pres% 3
  609.   Æ í
  610.   íres% 1 p y
  611.   íres% 2 p yfloop
  612.   íres% 3 p ymloop
  613.   É
  614.  
  615.  
  616.